package function.client.adaptor;

/**
 * facade方法调用适配器
 *
 * @author G_Y, 2022/3/30 9:22
 **/
public interface FacadeMethodAdaptor<T, R> {

    /**
     * facade方法适配方法
     *
     * @param t 对应的facade方法请求实体
     * @return 对应的facade方法响应实体
     * @author G_Y, 2022/3/30 9:35
     **/
    R facadeMethodInvoke(T t);

    /**
     * facade方法调用结果校验器
     *
     * @param t facade方法请求参数实体
     * @param r facade方法响应实体
     * @return 返回true代表结果符合预期，false代表不符合
     * @author G_Y, 2022/3/30 10:05
     **/
    boolean resultCheck(T t, R r);

    /**
     * 获取facade方法名称
     *
     * @author G_Y, 2022/3/30 10:22
     **/
    String getFacadeMethodName();

    /**
     * 获取当前facade方法告警日志异常码
     *
     * @author G_Y, 2022/3/30 10:23
     **/
    String getLogErrorCode();

}
